package com.suzhouhe.util.utils;

import com.suzhouhe.util.exception.ServiceException;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;

import java.util.Collection;
import java.util.Map;

/**
 * 验证参数
 *
 * @author suzhouhe
 * @date 2020-11-03 17:09
 **/
public class AssertUtil {

    /**
     * 参数obj不能为空，否则抛出业务异常，描述信息为msg
     *
     * @param obj 断言参数
     * @param msg 异常描述
     */
    public static void nullTrw(Object obj, String msg) {
        if (obj == null) {
            throw new ServiceException(msg);
        }
        if (obj instanceof String) {
            String objMsg = (String) obj;
            if (StringUtils.isEmpty(objMsg)) {
                throw new ServiceException(msg);
            }
        }
    }

    /**
     * 参数obj不能为空，否则抛出业务异常，描述信息为msg
     *
     * @param collection 断言参数 - 集合类型
     * @param msg        异常描述
     */
    public static void nullTrw(Collection<?> collection, String msg) {
        if (CollectionUtils.isEmpty(collection)) {
            throw new ServiceException(msg);
        }
    }

    /**
     * 参数obj不能为空，否则抛出业务异常，描述信息为msg
     *
     * @param map 断言参数 - 集合类型
     * @param msg 异常描述
     */
    public static <K, V> void nullTrw(Map<K, V> map, String msg) {
        if (CollectionUtils.isEmpty(map)) {
            throw new ServiceException(msg);
        }
    }


    /**
     * 为真抛出异常
     *
     * @param b   条件
     * @param msg 异常描述
     */
    public static void trueTrw(Boolean b, String msg) {
        if (b == null || b) {
            throw new ServiceException(msg);
        }
    }

    /**
     * 为假抛出异常
     *
     * @param b   条件
     * @param msg 异常描述
     */
    public static void falseTrw(Boolean b, String msg) {
        if (b == null || !b) {
            throw new ServiceException(msg);
        }
    }

}
